const num = 10;
export const a1 = 10n;
export const a2 = BigInt(num);
export const a3 = !num;
export const a4 = Boolean(null);
export const a5 = true;
export const a6 = null;

export class Foo {
  public prop = num;
}

export function fn(a = num, b = true): void {
  console.info(`${a}${b}`);
}

//正例
const a = 10n;
const a = BigInt(10);
const a = !0;
const a = Boolean(null);
const a = true;
const a = null;
const a = 10;
const a = Infinity;
const a = NaN;
const a = Number('1');
const a = /a/;
const a = new RegExp('a');
const a = `str`;
const a = String(1);
const a = Symbol('a');
const a = undefined;
const a = void someValue;

class Foo {
  prop = 5;
}

function fn(a = 5, b = true) {}

//正例
const fn = (a = 5, b = true, c = 'foo') => { };

const fn = function (a = 5, b = true, c = 'foo') { };

function fn(a = 5, b = true, c = 'foo') { }

function fn(a: number, b: boolean, c: string) { }

class Foo {
  a = 5;
  b = true;
  c = 'foo';
}

class Foo {
  readonly a: number = 5;
}

const a: any = 5;

const fn = function (a: any = 5, b: any = true, c: any = 'foo') { };

//正例
class Foo {
  a?: number = 5;
  b?: boolean = true;
  c?: string = 'foo';
}

class Foo {
  constructor(public a = true) { }
}